package com.chuci.Algo;

public class IDCard {

    public static boolean isCard(String carNumber) {
        //判断输入身份证号长度是否合法
//        if (Func.isEmpty(carNumber) || carNumber.length() != 18) {
//            throw new RuntimeException("身份证长度不合法");//不合法 抛出一个异常
//        }
        //城市列表
//        Map<Integer, String> city = Map.of(11, "北京", 12, "天津", 13, "河北", 14, "山西", 15, "内蒙古",
//                21, "辽宁", 22, "吉林", 23, "黑龙江",
//                31, "上海", 32, "江苏", 33, "浙江", 34, "安徽", 35, "福建", 36, "江西", 37, "山东",
//                41, "河南", 42, "湖北 ", 43, "湖南", 44, "广东", 45, "广西", 46, "海南",
//                50, "重庆", 51, "四川", 52, "贵州", 53, "云南", 54, "西藏",
//                61, "陕西", 62, "甘肃", 63, "青海", 64, "宁夏", 65, "新疆",
//                71, "台湾", 81, "香港", 2, "澳门",
//                91, "国外");
        //校验身份证真假
        int sum = 0;
        int[] weight = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//将加权因子定义为数组
        //遍历weight数组 求身份证前17项系数和
        for (int i = 0; i < weight.length; i++) {
            int n = carNumber.charAt(i) - 48;//获取 身份证对应数
            int w = weight[i];
            sum += w * n;
        }
        //对11求余
        int index = sum % 11;
        //校验码
        String m = "10X98765432";
        //获取身份证最后一位进行比对
//        return m.charAt(index) == carNumber.charAt(17);
        return m.charAt(index) == carNumber.charAt(17);
    }

    public static String getIDCard(String carNumber) {
        //判断输入身份证号长度是否合法
//        if (Func.isEmpty(carNumber) || carNumber.length() != 18) {
//            throw new RuntimeException("身份证长度不合法");//不合法 抛出一个异常
//        }
        //校验身份证真假
        int sum = 0;
        int[] weight = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//将加权因子定义为数组
        //遍历weight数组 求身份证前17项系数和
        for (int i = 0; i < weight.length; i++) {
            int n = carNumber.charAt(i) - 48;//获取 身份证对应数
            int w = weight[i];
            sum += w * n;
        }
        //对11求余
        int index = sum % 11;
        //校验码
        String m = "10X98765432";
        //获取身份证最后一位进行比对
//        return m.charAt(index) == carNumber.charAt(17);
        return carNumber + m.charAt(index);
    }
}
